import Vue from 'vue';
import './style.css';
import App from './App.vue';
import router from './router';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import VueCoreVideoPlayer from 'vue-core-video-player';
import store from './store';
import * as echarts from 'echarts'

// 配置全局属性
Vue.use(ElementUI);
Vue.config.productionTip = false;
Vue.prototype.$echarts = echarts;
Vue.use(VueCoreVideoPlayer, {
  lang: 'zh-CN'
});

// 创建 Vue 实例
const app = new Vue({
  store,
  router,
  render: h => h(App)
});

// 先挂载应用
app.$mount('#app');

// 在路由守卫中处理用户信息
router.beforeEach(async (to, from, next) => {
  // 如果是登录页面或注册页面，直接放行
  if (to.path === '/login' || to.path === '/register') {
    next();
    return;
  }

  try {
    // 检查是否有 token
    if (!store.state.user.token) {
      next('/login');
      return;
    }

    // 获取用户信息
    await store.dispatch('user/getUserInfo');
    
    // 如果是主页，添加菜单
    if (to.path === '/home') {
      store.commit('addMenu', {
        id: '1',
        name: '主页',
        icon: 'el-icon-s-home',
        path: '/home'
      });
    }
    
    // 如果访问根路径，重定向到home
    if (to.path === '/') {
      next('/home');
      return;
    }
    
    next();
  } catch (error) {
    // 如果获取用户信息失败，清除 token 并重定向到登录页
    store.commit('user/CLEAR_USER');
    next('/login');
  }
});
